package cz.muni.service;

import cz.muni.dao.TarrifDao;
import cz.muni.dao.TarrifDaoLocal;
import cz.muni.dto.TarrifDTO;
import cz.muni.entities.Tarrif;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
import javax.ejb.EJB;
import javax.ejb.Stateless;

/**
 *
 * @author Thomas
 */
@Stateless
public class TarrifService implements TarrifServiceLocal {
    
    @EJB
    private TarrifDaoLocal daoLocal;

    
    private TarrifDTO mapToDTO(Tarrif tarrif) {
        if (tarrif == null) {
            return null;
        }
        TarrifDTO t = new TarrifDTO();
        t.setId(tarrif.getId());
        t.setName(tarrif.getName());
        t.setPricePerKG(tarrif.getPricePerKG());
        t.setPricePerKM(tarrif.getPricePerKM());
        t.setDeliveryFee(tarrif.getDeliveryFee());
        return t;
    }
    
    private Tarrif mapFromDTO(TarrifDTO tarrif) {
        if (tarrif == null) {
            return null;
        }
        Tarrif t = new Tarrif();
        t.setId(tarrif.getId());
        t.setName(tarrif.getName());
        t.setPricePerKG(tarrif.getPricePerKG());
        t.setPricePerKM(tarrif.getPricePerKM());
        t.setDeliveryFee(tarrif.getDeliveryFee());
        return t;
    }
    
    @Override
    public void create(TarrifDTO tarrif) {
        Tarrif t = mapFromDTO(tarrif);
        daoLocal.create(t);
        tarrif.setId(t.getId());
    }

    @Override
    public void delete(TarrifDTO tarrif) {
        daoLocal.delete(this.mapFromDTO(tarrif));
    }

    @Override
    public TarrifDTO find(Long id) {
        return this.mapToDTO(daoLocal.find(id));
    }

    @Override
    public TarrifDTO update(TarrifDTO tarrif) {
        return this.mapToDTO(daoLocal.update(this.mapFromDTO(tarrif)));
    }

    @Override
    public List<TarrifDTO> findAll() {
        List<TarrifDTO> list = new ArrayList<TarrifDTO>();
        for (Tarrif tarrif : daoLocal.findAll()) {
            list.add(this.mapToDTO(tarrif));
        }
        return list;
    }
}
